<?php
//
//class String implements ArrayAccess, Countable, ByteArrayConvertable {
//    protected $data;
//    protected $source;
//
//    function __construct($data) {
//        $this->source = $data;
//        $this->data = str_split($data, 1);
//    }
//
//    function offsetExists($offset) {
//        return isset($this->data[$offset]);
//    }
//
//    function __toString() {
//        return implode('', $this->data);
//    }
//
//    function offsetGet($offset) {
//        return $this->data[$offset];
//    }
//
//    function offsetSet($offset, $value) {
//        if (is_int($value)) $value = chr($value);
//        if (is_string($value."")) {
//            if (strlen($value) > 1) {
//                $arr = str_split($value, 1);
//                $value = $arr;
//            }
//            $this->data[$offset] = value;
//        }
//    }
//
//    function offsetUnset($offset) {
//        unset($this->data[$offset]);
//        $this->data = array_values($this->data);
//    }
//
//    function change($subject, $replacement) {
//        $str = str_replace($subject, $replacement, $this->__toString());
//        $this->data = str_split($str, 1);
//    }
//
//    function replace($regexp, $replacement, $limit = NULL, &$count = NULL) {
//        $str = $this->__toString();
//        $str = preg_replace($regexp, $replacement, $str, $limit, $count);
//        $this->data = str_split($str, 1);
//    }
//
//    function count() {
//        return count($this->data);
//    }
//
//    function length() {
//        return count($this->data);
//    }
//
//    function toBytesArray() {
//        $ret = array();
//        for($x=0; $x<$this->length(); $x++) {
//            $ret[] = ord($this->data[$x]);
//        }
//        return $ret;
//    }
//
//    function toByteArray() {
//        return new ByteArray($this->toBytesArray);
//    }
//
//    function fromByteArray(ByteArray $array) {
//        $this->data = array();
//        for($x=0; $x < count($array); $x++) {
//            $this->data[] = chr($array[$x]);
//        }
//    }
//}
//?>